// Copyright 2021-2025 Buf Technologies, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// @generated by protoc-gen-es v2.10.1 with parameter "target=ts,import_extension=js"
// @generated from file google/protobuf/unittest_features.proto (package pb, edition 2024)
/* eslint-disable */

import type { GenEnum, GenExtension, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import { enumDesc, extDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
import type { FeatureSet } from "@bufbuild/protobuf/wkt";
import { file_google_protobuf_descriptor } from "@bufbuild/protobuf/wkt";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file google/protobuf/unittest_features.proto.
 */
export const file_google_protobuf_unittest_features: GenFile = /*@__PURE__*/
  fileDesc("Cidnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfZmVhdHVyZXMucHJvdG8SAnBiIsgBCgtUZXN0TWVzc2FnZRpfCgZOZXN0ZWQyVQoLdGVzdF9uZXN0ZWQSGy5nb29nbGUucHJvdG9idWYuRmVhdHVyZVNldBiNTiABKAsyFi5wYi5UZXN0TmVzdGVkRmVhdHVyZXNSCnRlc3ROZXN0ZWQyWAoMdGVzdF9tZXNzYWdlEhsuZ29vZ2xlLnByb3RvYnVmLkZlYXR1cmVTZXQYjk4gASgLMhcucGIuVGVzdE1lc3NhZ2VGZWF0dXJlc1ILdGVzdE1lc3NhZ2UikgEKE1Rlc3RNZXNzYWdlRmVhdHVyZXMSewoMZmlsZV9mZWF0dXJlGAEgASgOMg8ucGIuRW51bUZlYXR1cmVCVIgBAZgBAaIBCxIGVkFMVUUxGIQHogELEgZWQUxVRTIY5weiAQsSBlZBTFVFMxjoB6IBDBIGVkFMVUU0GJ2NBqIBDBIGVkFMVUU1GJ6NBrIBAwjoByKRAQoSVGVzdE5lc3RlZEZlYXR1cmVzEnsKDGZpbGVfZmVhdHVyZRgBIAEoDjIPLnBiLkVudW1GZWF0dXJlQlSIAQGYAQGiAQsSBlZBTFVFMRiEB6IBCxIGVkFMVUUyGOcHogELEgZWQUxVRTMY6AeiAQwSBlZBTFVFNBidjQaiAQwSBlZBTFVFNRiejQayAQMI6AcirAwKDFRlc3RGZWF0dXJlcxJ7CgxmaWxlX2ZlYXR1cmUYASABKA4yDy5wYi5FbnVtRmVhdHVyZUJUiAEBmAEBogELEgZWQUxVRTEYhAeiAQsSBlZBTFVFMhjnB6IBCxIGVkFMVUUzGOgHogEMEgZWQUxVRTQYnY0GogEMEgZWQUxVRTUYno0GsgEDCOgHEkwKF2V4dGVuc2lvbl9yYW5nZV9mZWF0dXJlGAIgASgOMg8ucGIuRW51bUZlYXR1cmVCGogBAZgBAqIBCxIGVkFMVUUxGIQHsgEDCOgHEkQKD21lc3NhZ2VfZmVhdHVyZRgDIAEoDjIPLnBiLkVudW1GZWF0dXJlQhqIAQGYAQOiAQsSBlZBTFVFMRiEB7IBAwjoBxJCCg1maWVsZF9mZWF0dXJlGAQgASgOMg8ucGIuRW51bUZlYXR1cmVCGogBAZgBBKIBCxIGVkFMVUUxGIQHsgEDCOgHEkIKDW9uZW9mX2ZlYXR1cmUYBSABKA4yDy5wYi5FbnVtRmVhdHVyZUIaiAEBmAEFogELEgZWQUxVRTEYhAeyAQMI6AcSQQoMZW51bV9mZWF0dXJlGAYgASgOMg8ucGIuRW51bUZlYXR1cmVCGogBAZgBBqIBCxIGVkFMVUUxGIQHsgEDCOgHEkcKEmVudW1fZW50cnlfZmVhdHVyZRgHIAEoDjIPLnBiLkVudW1GZWF0dXJlQhqIAQGYAQeiAQsSBlZBTFVFMRiEB7IBAwjoBxJECg9zZXJ2aWNlX2ZlYXR1cmUYCCABKA4yDy5wYi5FbnVtRmVhdHVyZUIaiAEBmAEIogELEgZWQUxVRTEYhAeyAQMI6AcSQwoObWV0aG9kX2ZlYXR1cmUYCSABKA4yDy5wYi5FbnVtRmVhdHVyZUIaiAEBmAEJogELEgZWQUxVRTEYhAeyAQMI6AcSXQoQbXVsdGlwbGVfZmVhdHVyZRgKIAEoDjIPLnBiLkVudW1GZWF0dXJlQjKIAQGYAQGYAQSYAQOYAQaYAQeYAQiYAQmYAQWYAQKiAQsSBlZBTFVFMRiEB7IBAwjoBxJCChJib29sX2ZpZWxkX2ZlYXR1cmUYCyABKAhCJogBAZgBBKIBChIFZmFsc2UYhAeiAQoSBHRydWUYnY0GsgEDCOgHElsKDnNvdXJjZV9mZWF0dXJlGA8gASgOMg8ucGIuRW51bUZlYXR1cmVCMogBApgBAZgBBJgBA5gBBpgBB5gBCJgBCZgBBZgBAqIBCxIGVkFMVUUxGIQHsgEDCOgHElwKD3NvdXJjZV9mZWF0dXJlMhgQIAEoDjIPLnBiLkVudW1GZWF0dXJlQjKIAQKYAQGYAQSYAQOYAQaYAQeYAQiYAQmYAQWYAQKiAQsSBlZBTFVFMRiEB7IBAwjoBxKNAQoPcmVtb3ZlZF9mZWF0dXJlGBEgASgOMg8ucGIuRW51bUZlYXR1cmVCY4gBAZgBAZgBBKIBCxIGVkFMVUUxGIQHogELEgZWQUxVRTIY6AeiAQsSBlZBTFVFMxjpB7IBLQjoBxDoBxoiQ3VzdG9tIGZlYXR1cmUgZGVwcmVjYXRpb24gd2FybmluZyDpBxJUCg5mdXR1cmVfZmVhdHVyZRgSIAEoDjIPLnBiLkVudW1GZWF0dXJlQiuIAQGYAQGYAQSiAQsSBlZBTFVFMRiEB6IBCxIGVkFMVUUyGOkHsgEDCOkHElcKDmxlZ2FjeV9mZWF0dXJlGBMgASgOMg8ucGIuRW51bUZlYXR1cmVCLogBAZgBAZgBBKIBCxIGVkFMVUUxGIQHogELEgZWQUxVRTIY6AeyAQYI5wcg6AcSzgEKFnZhbHVlX2xpZmV0aW1lX2ZlYXR1cmUYFCABKA4yGC5wYi5WYWx1ZUxpZmV0aW1lRmVhdHVyZUKTAYgBAZgBAaIBHRIYVkFMVUVfTElGRVRJTUVfSU5IRVJJVEVEGIQHogEaEhVWQUxVRV9MSUZFVElNRV9GVVRVUkUY6AeiARsSFVZBTFVFX0xJRkVUSU1FX0ZVVFVSRRifjQayAS8I6AcQno0GGiJDdXN0b20gZmVhdHVyZSBkZXByZWNhdGlvbiB3YXJuaW5nIJ+NBirmAQoLRW51bUZlYXR1cmUSHQoZVEVTVF9FTlVNX0ZFQVRVUkVfVU5LTk9XThAAEgoKBlZBTFVFMRABEgoKBlZBTFVFMhACEgoKBlZBTFVFMxADEgoKBlZBTFVFNBAEEgoKBlZBTFVFNRAFEgoKBlZBTFVFNhAGEgoKBlZBTFVFNxAHEgoKBlZBTFVFOBAIEgoKBlZBTFVFORAJEgsKB1ZBTFVFMTAQChILCgdWQUxVRTExEAsSCwoHVkFMVUUxMhAMEgsKB1ZBTFVFMTMQDRILCgdWQUxVRTE0EA4SCwoHVkFMVUUxNRAPKuACChRWYWx1ZUxpZmV0aW1lRmVhdHVyZRIfChtURVNUX1ZBTFVFX0xJRkVUSU1FX1VOS05PV04QABIcChhWQUxVRV9MSUZFVElNRV9JTkhFUklURUQQARJOChZWQUxVRV9MSUZFVElNRV9TVVBQT1JUEAIaMiIwCJ2NBhCejQYaIkN1c3RvbSBmZWF0dXJlIGRlcHJlY2F0aW9uIHdhcm5pbmcgn40GEiQKHFZBTFVFX0xJRkVUSU1FX0VNUFRZX1NVUFBPUlQQAxoCIgASIQoVVkFMVUVfTElGRVRJTUVfRlVUVVJFEAQaBiIECJ2NBhJJChlWQUxVRV9MSUZFVElNRV9ERVBSRUNBVEVEEAUaKiIoEJ2NBhoiQ3VzdG9tIGZlYXR1cmUgZGVwcmVjYXRpb24gd2FybmluZxIlChZWQUxVRV9MSUZFVElNRV9SRU1PVkVEEAYaCSIHEOgHIJ2NBjpCCgR0ZXN0EhsuZ29vZ2xlLnByb3RvYnVmLkZlYXR1cmVTZXQYj04gASgLMhAucGIuVGVzdEZlYXR1cmVzUgR0ZXN0QhJCEFVuaXR0ZXN0RmVhdHVyZXNiCGVkaXRpb25zcOkH", [file_google_protobuf_descriptor]);

/**
 * @generated from message pb.TestMessage
 */
export type TestMessage = Message<"pb.TestMessage"> & {
};

/**
 * Describes the message pb.TestMessage.
 * Use `create(TestMessageSchema)` to create a new message.
 */
export const TestMessageSchema: GenMessage<TestMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest_features, 0);

/**
 * @generated from message pb.TestMessage.Nested
 */
export type TestMessage_Nested = Message<"pb.TestMessage.Nested"> & {
};

/**
 * Describes the message pb.TestMessage.Nested.
 * Use `create(TestMessage_NestedSchema)` to create a new message.
 */
export const TestMessage_NestedSchema: GenMessage<TestMessage_Nested> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest_features, 0, 0);

/**
 * @generated from extension: pb.TestNestedFeatures test_nested = 9997;
 */
export const TestMessage_Nested_test_nested: GenExtension<FeatureSet, TestNestedFeatures> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest_features, 0, 0, 0);

/**
 * @generated from extension: pb.TestMessageFeatures test_message = 9998;
 */
export const TestMessage_test_message: GenExtension<FeatureSet, TestMessageFeatures> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest_features, 0, 0);

/**
 * @generated from message pb.TestMessageFeatures
 */
export type TestMessageFeatures = Message<"pb.TestMessageFeatures"> & {
  /**
   * @generated from field: pb.EnumFeature file_feature = 1;
   */
  fileFeature: EnumFeature;
};

/**
 * Describes the message pb.TestMessageFeatures.
 * Use `create(TestMessageFeaturesSchema)` to create a new message.
 */
export const TestMessageFeaturesSchema: GenMessage<TestMessageFeatures> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest_features, 1);

/**
 * @generated from message pb.TestNestedFeatures
 */
export type TestNestedFeatures = Message<"pb.TestNestedFeatures"> & {
  /**
   * @generated from field: pb.EnumFeature file_feature = 1;
   */
  fileFeature: EnumFeature;
};

/**
 * Describes the message pb.TestNestedFeatures.
 * Use `create(TestNestedFeaturesSchema)` to create a new message.
 */
export const TestNestedFeaturesSchema: GenMessage<TestNestedFeatures> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest_features, 2);

/**
 * @generated from message pb.TestFeatures
 */
export type TestFeatures = Message<"pb.TestFeatures"> & {
  /**
   * @generated from field: pb.EnumFeature file_feature = 1;
   */
  fileFeature: EnumFeature;

  /**
   * @generated from field: pb.EnumFeature extension_range_feature = 2;
   */
  extensionRangeFeature: EnumFeature;

  /**
   * @generated from field: pb.EnumFeature message_feature = 3;
   */
  messageFeature: EnumFeature;

  /**
   * @generated from field: pb.EnumFeature field_feature = 4;
   */
  fieldFeature: EnumFeature;

  /**
   * @generated from field: pb.EnumFeature oneof_feature = 5;
   */
  oneofFeature: EnumFeature;

  /**
   * @generated from field: pb.EnumFeature enum_feature = 6;
   */
  enumFeature: EnumFeature;

  /**
   * @generated from field: pb.EnumFeature enum_entry_feature = 7;
   */
  enumEntryFeature: EnumFeature;

  /**
   * @generated from field: pb.EnumFeature service_feature = 8;
   */
  serviceFeature: EnumFeature;

  /**
   * @generated from field: pb.EnumFeature method_feature = 9;
   */
  methodFeature: EnumFeature;

  /**
   * @generated from field: pb.EnumFeature multiple_feature = 10;
   */
  multipleFeature: EnumFeature;

  /**
   * @generated from field: bool bool_field_feature = 11;
   */
  boolFieldFeature: boolean;

  /**
   * @generated from field: pb.EnumFeature source_feature = 15;
   */
  sourceFeature: EnumFeature;

  /**
   * @generated from field: pb.EnumFeature source_feature2 = 16;
   */
  sourceFeature2: EnumFeature;

  /**
   * @generated from field: pb.EnumFeature removed_feature = 17;
   */
  removedFeature: EnumFeature;

  /**
   * @generated from field: pb.EnumFeature future_feature = 18;
   */
  futureFeature: EnumFeature;

  /**
   * @generated from field: pb.EnumFeature legacy_feature = 19;
   */
  legacyFeature: EnumFeature;

  /**
   * @generated from field: pb.ValueLifetimeFeature value_lifetime_feature = 20;
   */
  valueLifetimeFeature: ValueLifetimeFeature;
};

/**
 * Describes the message pb.TestFeatures.
 * Use `create(TestFeaturesSchema)` to create a new message.
 */
export const TestFeaturesSchema: GenMessage<TestFeatures> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest_features, 3);

/**
 * @generated from enum pb.EnumFeature
 */
export enum EnumFeature {
  /**
   * @generated from enum value: TEST_ENUM_FEATURE_UNKNOWN = 0;
   */
  TEST_ENUM_FEATURE_UNKNOWN = 0,

  /**
   * @generated from enum value: VALUE1 = 1;
   */
  VALUE1 = 1,

  /**
   * @generated from enum value: VALUE2 = 2;
   */
  VALUE2 = 2,

  /**
   * @generated from enum value: VALUE3 = 3;
   */
  VALUE3 = 3,

  /**
   * @generated from enum value: VALUE4 = 4;
   */
  VALUE4 = 4,

  /**
   * @generated from enum value: VALUE5 = 5;
   */
  VALUE5 = 5,

  /**
   * @generated from enum value: VALUE6 = 6;
   */
  VALUE6 = 6,

  /**
   * @generated from enum value: VALUE7 = 7;
   */
  VALUE7 = 7,

  /**
   * @generated from enum value: VALUE8 = 8;
   */
  VALUE8 = 8,

  /**
   * @generated from enum value: VALUE9 = 9;
   */
  VALUE9 = 9,

  /**
   * @generated from enum value: VALUE10 = 10;
   */
  VALUE10 = 10,

  /**
   * @generated from enum value: VALUE11 = 11;
   */
  VALUE11 = 11,

  /**
   * @generated from enum value: VALUE12 = 12;
   */
  VALUE12 = 12,

  /**
   * @generated from enum value: VALUE13 = 13;
   */
  VALUE13 = 13,

  /**
   * @generated from enum value: VALUE14 = 14;
   */
  VALUE14 = 14,

  /**
   * @generated from enum value: VALUE15 = 15;
   */
  VALUE15 = 15,
}

/**
 * Describes the enum pb.EnumFeature.
 */
export const EnumFeatureSchema: GenEnum<EnumFeature> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest_features, 0);

/**
 * @generated from enum pb.ValueLifetimeFeature
 */
export enum ValueLifetimeFeature {
  /**
   * @generated from enum value: TEST_VALUE_LIFETIME_UNKNOWN = 0;
   */
  TEST_VALUE_LIFETIME_UNKNOWN = 0,

  /**
   * @generated from enum value: VALUE_LIFETIME_INHERITED = 1;
   */
  VALUE_LIFETIME_INHERITED = 1,

  /**
   * @generated from enum value: VALUE_LIFETIME_SUPPORT = 2;
   */
  VALUE_LIFETIME_SUPPORT = 2,

  /**
   * @generated from enum value: VALUE_LIFETIME_EMPTY_SUPPORT = 3;
   */
  VALUE_LIFETIME_EMPTY_SUPPORT = 3,

  /**
   * @generated from enum value: VALUE_LIFETIME_FUTURE = 4;
   */
  VALUE_LIFETIME_FUTURE = 4,

  /**
   * @generated from enum value: VALUE_LIFETIME_DEPRECATED = 5;
   */
  VALUE_LIFETIME_DEPRECATED = 5,

  /**
   * @generated from enum value: VALUE_LIFETIME_REMOVED = 6;
   */
  VALUE_LIFETIME_REMOVED = 6,
}

/**
 * Describes the enum pb.ValueLifetimeFeature.
 */
export const ValueLifetimeFeatureSchema: GenEnum<ValueLifetimeFeature> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest_features, 1);

/**
 * @generated from extension: pb.TestFeatures test = 9999;
 */
export const test: GenExtension<FeatureSet, TestFeatures> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest_features, 0);

